#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef int DataType;

typedef struct ListNode {
	struct ListNode* next;
	struct ListNode* prev;
	DataType data;
}List;

List* BuyListNode(DataType x);
List* ListInit();
void ListPrint(List* head);
void ListPushBack(List* head, DataType x);
void ListPushFront(List* head, DataType x);
void ListPopBack(List* head);
void ListPopFront(List* head);
bool ListEmpty(List* head);
void ListInsert(List* pos, DataType x);
void ListErase(List* pos);